package com.hpe.core.enums;

import org.apache.commons.lang.StringUtils;

/**
 * 统计分组的条件枚举
 * @author luolin
 *
 * @version $id:ReportGroupEnum.java,v 0.1 2015年8月18日 下午4:47:55 luolin Exp $
 */
public enum ReportGroupEnum {

    /** 根据小时来分组 */
    GROUP_BY_HOUR("HOUR", "根据小时来分组"),
    /** 根据天来分组 */
    GROUP_BY_DAY("DAY", "根据天来分组"),
    /** 根据周来分组 */
    GROUP_BY_WEEK("WEEK", "根据周来分组"),
    /** 根据月来分组 */
    GROUP_BY_MONTH("MONTH", "根据月来分组")
    // ..
    ;

    /** 业务类型枚举key值 */
    private final String code;

    /** 业务类型枚举描述信息 */
    private final String desc;

    /**
     * Getter method for property <tt>code</tt>.
     * 
     * @return property value of code
     */
    public String getCode() {
        return code;
    }

    /**
     * Getter method for property <tt>desc</tt>.
     * 
     * @return property value of desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * @param code
     *            枚举key值
     * @param desc
     *            枚举描述信息
     */
    private ReportGroupEnum(final String code, final String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 通过code值获取枚举对象
     * 
     * @param code 枚举值
     * @return 枚举对象
     */
    public static ReportGroupEnum getByCode(String code) {
        if (StringUtils.isBlank(code)) {
            return null;
        }
        for (ReportGroupEnum type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }
}
